Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Scientific programming language</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Scientific_programming_language"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.math.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Scientific_programming_language rootpage-Scientific_programming_language skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Scientific programming language</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><p>
<b>Scientific programming language</b> may refer to two related, yet distinct, concepts in computer programming. In a broad sense, it describes any programming language used extensively in <a href="Computational_science" title="Computational science">computational science</a> and <a href="Computational_mathematics" title="Computational mathematics">computational mathematics</a>, such as C, C++, Python, and Java.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> In a stricter sense, it designates languages that are designed and optimized for handling mathematical formulas and matrix operations, offering intrinsic support for these tasks.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Overview">Overview</h2></div>
<p>In the broad sense, a scientific programming language is one that is applied to numerical modeling, simulation, data analysis, and visualization. Languages such as Python, through libraries like NumPy, SciPy, and Matplotlib, have become dominant in fields ranging from machine learning to high-performance computing.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> Conversely, the strict sense emphasizes languages that provide built‐in support for matrix arithmetic and symbolic computation. Examples include <a href="Fortran" title="Fortran">Fortran</a>, <a href="MATLAB" title="MATLAB">MATLAB</a>, <a href="Julia_(programming_language)" title="Julia (programming language)">Julia</a>, <a href="GNU_Octave" title="GNU Octave">Octave</a>, and <a href="R_(programming_language)" title="R (programming language)">R</a>. These languages are characterized by syntax that closely mirrors mathematical notation, enabling concise expression of complex formulas and operations.
</p>
<div class="mw-heading mw-heading2"><h2 id="Historical_context_and_evolution">Historical context and evolution</h2></div>
<p>Historically, languages like <a href="ALGOL" title="ALGOL">ALGOL</a> and <a href="Fortran" title="Fortran">Fortran</a> laid the groundwork for scientific computing by introducing high-level constructs that enabled efficient numerical computations. Over time, the advent of proprietary tools such as <a href="MATLAB" title="MATLAB">MATLAB</a> and open-source alternatives like <a href="GNU_Octave" title="GNU Octave">GNU Octave</a> expanded accessibility. In recent years, modern languages like <a href="Julia_(programming_language)" title="Julia (programming language)">Julia</a> have emerged to combine high performance with an expressive syntax, while general-purpose languages such as Python have evolved through robust scientific libraries to address a wide range of computational problems.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Key_features">Key features</h2></div>
<p>Scientific programming languages, particularly in the strict sense, typically include:
</p>
<ul><li>Native or intrinsic support for arrays, vectors, and matrices.</li>
<li>Concise syntax for mathematical operations.</li>
<li>Advanced libraries for numerical linear algebra, optimization, and statistical analysis.</li>
<li>Facilities for both symbolic and numerical computation.</li>
<li>Tools for visualization and data exploration.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Comparative_examples">Comparative examples</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Linear_algebra">Linear algebra</h3></div>
<p>Languages with built-in support for matrix operations allow users to work directly with mathematical constructs. For example, the following Julia code solves a system of linear equations:
</p>
<div class="mw-highlight mw-highlight-lang-julia mw-content-ltr" dir="ltr"><pre><span class="n">A</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rand</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="c"># A is a 20x20 matrix</span>
<span class="n">b</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rand</span><span class="p">(</span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="c"># b is a 20-element vector</span>
<span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">A</span><span class="w"> </span><span class="o">\</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="c"># x is the solution to A*x = b</span>
</pre></div>
<p>In contrast, Python—although a general-purpose language—provides similar functionality via its libraries:
</p>
<div class="mw-highlight mw-highlight-lang-python mw-content-ltr" dir="ltr"><pre><span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span>
<span class="n">A</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">rand</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">20</span><span class="p">)</span>
<span class="n">b</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">rand</span><span class="p">(</span><span class="mi">20</span><span class="p">)</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">solve</span><span class="p">(</span><span class="n">A</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span>
</pre></div>
<p>This comparison highlights how general-purpose languages extend their capabilities with specialized libraries, whereas strict scientific languages often incorporate such features directly.
</p>
<div class="mw-heading mw-heading3"><h3 id="Mathematical_optimization">Mathematical optimization</h3></div>
<p>Scientific programming languages also facilitate optimization tasks with syntax that closely mirrors mathematical notation. The following Julia example finds the minimum of the polynomial:
</p>
<div class="center"><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle P(x,y)=x^{2}-3xy+5y^{2}-7y+3}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>P</mi>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo>,</mo>
<mi>y</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<msup>
<mi>x</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msup>
<mo>−<!-- − --></mo>
<mn>3</mn>
<mi>x</mi>
<mi>y</mi>
<mo>+</mo>
<mn>5</mn>
<msup>
<mi>y</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msup>
<mo>−<!-- − --></mo>
<mn>7</mn>
<mi>y</mi>
<mo>+</mo>
<mn>3</mn>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle P(x,y)=x^{2}-3xy+5y^{2}-7y+3}</annotation>
</semantics>
</math></span><img src="./783a020dd68553259336af5efa16bb08ee2033ef.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:34.423ex; height:3.176ex;" alt="{\displaystyle P(x,y)=x^{2}-3xy+5y^{2}-7y+3}" loading="lazy"></span></div>
<div class="mw-highlight mw-highlight-lang-julia mw-content-ltr" dir="ltr"><pre><span class="k">using</span><span class="w"> </span><span class="n">Optim</span>

<span class="n">P</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">)</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">x</span><span class="o">^</span><span class="mi">2</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">3</span><span class="n">x</span><span class="o">*</span><span class="n">y</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">5</span><span class="n">y</span><span class="o">^</span><span class="mi">2</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">7</span><span class="n">y</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">3</span>

<span class="n">z₀</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">]</span><span class="w"> </span><span class="c"># Starting point for the optimization algorithm</span>

<span class="n">optimize</span><span class="p">(</span><span class="n">z</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">P</span><span class="p">(</span><span class="n">z</span><span class="o">...</span><span class="p">),</span><span class="w"> </span><span class="n">z₀</span><span class="p">,</span><span class="w"> </span><span class="n">Newton</span><span class="p">();</span><span class="w"> </span><span class="n">autodiff</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">:forward</span><span class="p">)</span>
</pre></div>
<p>Python offers comparable optimization routines through libraries such as SciPy, where automatic differentiation and specialized algorithms are available, albeit not as an intrinsic language feature.
</p>
<div class="mw-heading mw-heading2"><h2 id="Modern_trends_and_emerging_languages">Modern trends and emerging languages</h2></div>
<p>Recent trends in scientific computing emphasize both performance and ease of use. Modern languages like <a href="Julia_(programming_language)" title="Julia (programming language)">Julia</a> have been designed specifically to address these demands, combining the clarity of high-level syntax with the efficiency required for large-scale numerical computation.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> Additionally, emerging languages such as Nim are gaining attention due to their performance and available libraries for linear algebra, even though they rely on external libraries rather than built-in support. This nuanced landscape demonstrates that the term "scientific programming language" is evolving alongside computational needs and technological advances.
</p>
<div class="mw-heading mw-heading2"><h2 id="Language_classification">Language classification</h2></div>
<p>A comparative overview of languages used in scientific computing is provided in the table below:
</p>
<table class="wikitable">

<tbody><tr>
<th>Language
</th>
<th>Classification
</th>
<th>Key Features
</th></tr>
<tr>
<td><b>Fortran</b>
</td>
<td>Strict Sense
</td>
<td>High performance, long-standing use in numerical and high-performance computing.
</td></tr>
<tr>
<td><b>MATLAB</b>
</td>
<td>Strict Sense
</td>
<td>Extensive toolboxes, proprietary software, widely used in academia and engineering.
</td></tr>
<tr>
<td><b>Julia</b>
</td>
<td>Strict Sense
</td>
<td>High-performance, open-source, built-in matrix support, and growing ecosystem.
</td></tr>
<tr>
<td><b>R</b>
</td>
<td>Strict Sense
</td>
<td>Specialized in statistical computing and graphics, extensive package ecosystem.
</td></tr>
<tr>
<td><b>GNU Octave</b>
</td>
<td>Strict Sense
</td>
<td>Open-source alternative to MATLAB with high compatibility.
</td></tr>
<tr>
<td><b>Maple</b>
</td>
<td>Strict Sense
</td>
<td>Computer algebra system for symbolic mathematics and interactive problem solving.
</td></tr>
<tr>
<td><b>APL</b> and <b>J</b>
</td>
<td>Strict Sense
</td>
<td>Concise array programming languages suited for mathematical operations, though niche.
</td></tr>
<tr>
<td><b>ALGOL</b>
</td>
<td>Strict Sense
</td>
<td>Historically significant language that influenced many modern programming languages.
</td></tr>
<tr>
<td><b>Python</b>
</td>
<td>Broad Sense
</td>
<td>Versatile general-purpose language with powerful libraries (NumPy, SciPy) for scientific computing.
</td></tr>
<tr>
<td><b>C/C++</b>
</td>
<td>Broad Sense
</td>
<td>Used for performance-critical applications with libraries such as BLAS and LAPACK.
</td></tr>
<tr>
<td><b>Java</b>
</td>
<td>Broad Sense
</td>
<td>Supports scientific computing via libraries like Apache Commons Math and ND4J.
</td></tr>
<tr>
<td><b>Nim</b>
</td>
<td>Emerging (Broad Sense)
</td>
<td>Offers fast performance with available libraries for linear algebra, though relying on external support.
</td></tr></tbody></table>
<div class="mw-heading mw-heading2"><h2 id="Conclusion">Conclusion</h2></div>
<p>The field of scientific programming languages continues to evolve, driven by the demands of modern computational science. While strict scientific languages offer built-in support for mathematical operations, general-purpose languages have successfully expanded their roles through specialized libraries. This evolution reflects a broader trend towards making scientific computing more accessible, efficient, and versatile.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Linear_algebra" title="Linear algebra">Linear algebra</a></li>
<li><a href="Mathematical_optimization" title="Mathematical optimization">Mathematical optimization</a></li>
<li><a href="Convex_optimization" title="Convex optimization">Convex optimization</a></li>
<li><a href="Linear_programming" title="Linear programming">Linear programming</a></li>
<li><a href="Quadratic_programming" title="Quadratic programming">Quadratic programming</a></li>
<li><a href="Computational_science" title="Computational science">Computational science</a></li>
<li><a href="Scientific_computing" class="mw-redirect" title="Scientific computing">Scientific computing</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.pcmag.com/encyclopedia/term/scientific-language">"Definition of scientific language"</a>. <i>PC Magazine Encyclopedia</i>. Ziff Davis<span class="reference-accessdate">. Retrieved <span class="nowrap">13 May</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.yourdictionary.com/scientific-language">"scientific language - Definition of scientific language"</a>. <i>YourDictionary</i>. The Computer Language Company Inc<span class="reference-accessdate">. Retrieved <span class="nowrap">27 March</span> 2014</span>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.datacamp.com/blog/top-programming-languages-for-data-scientists-in-2022">"Top 12 Programming Languages for Data Scientists in 2025"</a>. <i>DataCamp</i><span class="reference-accessdate">. Retrieved <span class="nowrap">3 April</span> 2025</span>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite id="CITEREFZachary" class="citation web cs1">Zachary, Joseph. <a rel="nofollow" class="external text" href="https://www.cs.utah.edu/~zachary/IntroSciProg.html">"Introduction to Scientific Programming: Computational Problem Solving Using Maple and C"</a>. <i>University of Utah</i><span class="reference-accessdate">. Retrieved <span class="nowrap">13 May</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://julialang.org/">"Julia Programming Language"</a>. <i>JuliaLang.org</i><span class="reference-accessdate">. Retrieved <span class="nowrap">3 April</span> 2025</span>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.slant.co/topics/2369/~best-languages-for-scientific-computation">"10 Best Languages for Scientific Computation as of 2025"</a>. <i>Slant</i><span class="reference-accessdate">. Retrieved <span class="nowrap">3 April</span> 2025</span>.</cite></span>
</li>
</ol></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-04-28" href="https://en.wikipedia.org/wiki/?title=Scientific_programming_language&amp;oldid=1287833172">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>